from django.shortcuts import render

# Create your views here.
from django.views import View

#1.获取首页
from contents.models import ContentCategory
from goods.models import GoodsChannel, SKU
from meiduo_mall.utlis.my_category import get_categories


class IndexView(View):
    def get(self, request):
        # 1,获取分类信息
        categories = get_categories()


        # 下面的方法已经被utils/my_category.py/get_categories()方法进行了封装
        '''
        # 2,获取频道(一级),并且是以"sequence"排序的内容
        # GoodsChannel表有37个,channels实际得到的是一个排列好的37个频道列表

        channels=GoodsChannel.objects.order_by('sequence')
        # 3,遍历频道
        for channel in channels:
            # 3,1 获取组编号
            group_id=channel.group_id

            # 3,2组装数据,这里只是做了一个数据格式，后面才是给里边添加内容
            if group_id not in categories:
                categories[group_id]={'channels':[],'sub_cats':[]}#按照组编号进行添加2级，3级数据，目前只是空字典，后面才是加数据



            #3.3 添加一级分类到字典中
            # 一级表也就是频道表tb_goods_channel里边是没有对应的名字的,所以我们需要通过.category外键关联到三级表tb_goods_category,查找对应的频道名字.才能给前端.url连接是1级独有的,所以在一级表查找(1.2.3级数据都在tb_goods_category里边有,通过自关联)
            category1=channel.category
            category1_dict={
                'id':category1.id,
                'name':category1.name,
                'url':channel.url
            }
            categories[group_id]['channels'].append(category1_dict)
            # 3,4获取二级分类,添加到字典中
            # subs是GoodsCategory类里边定义的related_name

            # related_name代替了类名的小写.set的作用,也就是获取自关联表格里边,父级id一样的所有内容.如05笔记里边的省市区的的获取
            # 下边获取到了所有同一个频道级的所有2级数据，
            sub_cats=category1.subs.all()
            #将每个频道所属商品遍历，并添加到字典的2级 数据
            for cat2 in sub_cats:
                categories[group_id]['sub_cats'].append(cat2)

        '''
        #4,获取手机分类广告数据
        # 到这一步，主页显示的数据都是数据库的真实内容，只是没有图片
        contents={}
        content_categories=ContentCategory.objects.order_by("id")
        for content_category in content_categories:
            # content_set是Content类即model里边的广告内容类,没定义related_name所以用这个方法获取
            contents[content_category.key]=content_category.content_set.order_by("sequence")

        # 拼接数据,渲染页面,返回数据
        context={
            "categories":categories,
            "contents":contents
        }



        return render(request, 'index.html',context=context)